/**
 * 
 */
package de.muyat.kablosuzizci.istemci;

/**
 * Ivmenin uc bilesenini tutan bir konteyner sinifi.
 * 
 * @author Dzhoshkun Ismail Shakir
 *
 */
public class Ivme implements Dondurulebilir3f {
	/**
	 * 
	 */
	private float x, y, z;

	/**
	 * 
	 */
	@SuppressWarnings("unused")
	private Ivme() {
		
	}
	
	/**
	 * 
	 * @param x
	 * @param y
	 * @param z
	 */
	public Ivme(float x, float y, float z) {
		this.x = x;
		this.y = y;
		this.z = z;
	}
	
	/**
	 * 
	 * @return
	 */
	public float getX() {
		return x;
	}
	
	/**
	 * 
	 * @return
	 */
	public float getY() {
		return y;
	}
	
	/**
	 * 
	 * @return
	 */
	public float getZ() {
		return z;
	}

	@Override
	public float[] vektorlestir() {
		return new float[]{x, y, z};
	}

	@Override
	public void vektordenKopyala(float[] vektor)
			throws IllegalArgumentException {
		if (vektor.length!=3)
			throw new IllegalArgumentException();
		this.x = vektor[0];
		this.y = vektor[1];
		this.z = vektor[2];
	}

	/**
	 * 
	 * @param baska
	 */
	public void topla(Ivme baska) {
		this.x += baska.x;
		this.y += baska.y;
		this.z += baska.z;
	}

	/**
	 * Eger saniyelik hiz degisimi, verilen {@code sinirDegeri}nden az ise, ivmenin butun degerlerini sifirlar.
	 * @param sinirDegeri
	 */
	public void gurultuFiltrele(float sinirDegeri) {
		float toplamHizDegisimi = (float) Math.sqrt(Math.pow(this.x, 2)+Math.pow(this.y, 2)+Math.pow(this.z,2));
		if (toplamHizDegisimi<sinirDegeri) {
			this.x = 0;
			this.y = 0;
			this.z = 0;
		}
	}
}
